[id].vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <LayoutContainer>
  3. <UiLoadingPanel v-if="pending" />
  4. <div v-else>
  5. <h2>{{ $t('educationTiming') }}</h2>
  6. <UiForm
  7. ref="form"
  8. :model="EducationTiming"
  9. :entity="educationTiming"
  10. :submitActions="submitActions"
  11. >
  12. <UiInputNumber
  13. field="educationTiming"
  14. v-model="educationTiming.timing"
  15. :rules="rules()"
  16. />
  17. </UiForm>
  18. <v-btn class="mr-12" @click="quit">
  19. {{ $t('back') }}
  20. </v-btn>
  21. </div>
  22. </LayoutContainer>
  23. </template>
  24. <script setup lang="ts">
  25. import {ref, computed, ComputedRef} from 'vue'
  26. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  27. import EducationTiming from '~/models/Education/EducationTiming'
  28. import {RouteLocationPathRaw, useRoute, useRouter} from 'vue-router'
  29. import { useI18n } from 'vue-i18n'
  30. import { AnyJson } from '~/types/data'
  31. import { SUBMIT_TYPE } from '~/types/enum/enums'
  32. import {Ref} from "@vue/reactivity";
  33. const i18n = useI18n()
  34. const { fetch } = useEntityFetch()
  35. const route = useRoute()
  36. const router = useRouter()
  37. const educationTimingId: Ref<number> = ref(parseInt(route.params.id as string))
  38. const goBackRoute: RouteLocationPathRaw = { path: `/parameters`, query: { tab: 'educationTimings' } }
  39. const submitActions = computed(() => {
  40. let actions: AnyJson = {}
  41. actions[SUBMIT_TYPE.SAVE_AND_BACK] = goBackRoute
  42. return actions
  43. })
  44. const { data: educationTiming, pending } = fetch(
  45. EducationTiming,
  46. educationTimingId.value
  47. )
  48. const rules = () => [
  49. (timing: string | null) =>
  50. (timing !== null && timing.length > 0) || i18n.t('please_enter_a_value'),
  51. ]
  52. const quit = () => {
  53. router.push(goBackRoute)
  54. }
  55. </script>